// api/chatHistoryApi.ts

/**
 * 聊天历史同步 API 封装
 * 对应后端 api/endpoints/chat_history.py
 */

import { initializeApiConfig } from './config';
const API_BASE = initializeApiConfig(); 

interface ErrorDetail {
  detail: string;
}

// 假设 handleResponse 函数存在
async function handleResponse<T>(response: Response): Promise<T> {
  if (!response.ok) {
    let errorDetail: ErrorDetail = { detail: '未知 API 错误' };
    try {
      errorDetail = await response.json();
    } catch (e) {
      const text = await response.text();
      errorDetail.detail = response.statusText + ': ' + text.substring(0, 100) + '...';
    }
    throw new Error(errorDetail.detail);
  }
  return response.json();
}
// -------------------------------------------------------------------

// --- 类型定义 (与后端 Pydantic 模型和响应保持一致) ---

// 对应后端的 AddChatMessageRequest
export interface AddChatMessagePayload {
  session_id: string; // 会话 ID
  account_id: string; // 用户 ID
  role: 'user' | 'assistant'; // 消息角色
  content: string; // 消息内容
  timestamp: string; // 时间戳 (ISO 格式)
  // 可以根据你的实际 models.schemas.py 文件调整
}

// 对应后端的 DeleteChatMessagesRequest
export interface DeleteChatMessagesPayload {
  session_id: string; // 会话 ID
  account_id: string; // 用户 ID
}

// 对应后端的通用成功响应
interface SuccessResponse {
  status: 'success';
  message: string;
}

// -------------------------------------------------------------------
// --- API 方法定义 ---
// -------------------------------------------------------------------

/**
 * 将聊天消息同步到 ChromaDB 的聊天历史Collection。
 * POST /api/v1/chat_history/add-chat-message
 * @param payload 聊天消息数据
 */
export const addChatMessage = async (payload: AddChatMessagePayload): Promise<SuccessResponse> => {
  const response = await fetch(`${API_BASE}/chat_history/add-chat-message`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(payload),
  });

  return handleResponse(response); 
};

/**
 * 根据会话ID和用户ID删除 ChromaDB 中的所有聊天消息。
 * POST /api/v1/chat_history/delete-chat-messages
 * @param payload 包含 session_id 和 account_id
 */
export const deleteChatMessages = async (payload: DeleteChatMessagesPayload): Promise<SuccessResponse> => {
  const response = await fetch(`${API_BASE}/chat_history/delete-chat-messages`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(payload),
  });

  return handleResponse(response);
};
